#捕捉异常

try:
    weight=float(input("请输入体重（单位：kg）"))
    height=float(input("请输入身高（单位：m）"))
    bmi=weight/(height**2)
    print("您的bmi值为"+str(bmi))
except ValueError:
    print("输入不为合理数字")
except:
    print("发生了未知错误")
else:
    print(str(bmi))     #没有错误时运行
finally:
    print("程序结束运行")      #不管发生错误与否都会运行

#测试

#单元测试库 unittest 单独一个文件测试
import unittest
# from [测试的代码所在的文件]import [函数名/类名]
# class Test(unittest.TestCase):      # TestCase的子类
      #def test_fun(self):
      #     self.assertEqual( , )
      # def test_fun1(self):
      #      
#终端命令:在win系统里要加文件名才会执行测试
#python -m unittest

#unittest.TestCase类的常见测试方法
#assertEqual(a,b)    : assert a==b
#assertTrue(a)    :assert a is True
#assertIn(a,b)    : assert a in b



#高阶函数
#[函数](num,[函数])

#传进去的函数不常用时可以用匿名函数lambda：只能有一个语句/表达式
#e.g. calculate_and_print(7,lambda num:num*5,print_with_vertical_bar)
#lambda   num1,num2:   num1+num2
#关键字    函数参数     函数返回的表达式
#匿名函数也可以定义好后被直接调用：(lambda num1,num2: num1+num2)(2,3)

